# 定义一个函数

# 定义一个函数，op的默认值是+
def calc(num1, num2, op="+"):
    if op == "+":
        return num1 + num2
    elif op == "-":
        return num1 - num2
    elif op == "*":
        return num1 * num2
    elif op == "/":
        return num1 / num2
    else:
        raise Exception("不支持的操作符" + op)


# 调用函数
print(calc(1, 2))
print(calc(1, 2, op="-"))


# 可变参数 (参数是元组)
def sum_01(*args):
    print(args)
    result = 0
    for arg in args:
        result += arg
    return result


# 可变参数（参数是字典）
def sum_02(**kwargs):
    print(kwargs)
    result = 0
    for key, value in kwargs.items():
        result += value
    return result


temp_a = [1, 2, 3]
# 拆包
print(sum_01(*temp_a))
print(sum_01(1, 2, 3, 4))
temp_b = {"a": 1, "b": 2, "c": 3}
# 拆包
print(sum_02(**temp_b))

# 匿名函数
sum_03 = lambda x, y: x + y
print(sum_03(1, 2))

# 匿名函数的应用
a = [1, 2, 3]
result = map(lambda x: x ** 2, a)  # map 第一个参数，函数， 第二个参数 集合或元组等， 会拿第二个参数中的每个值用第一个参数的函数进行处理
print(list(result))
